package cn.com.cennavi.bean;

/**
 * 分车道道路的属性
 * 
 * @ClassName: InputData
 * @Description: TODO（这里用一句话描述这个类的作用）
 * @author bull
 * @date 2016年1月15日 下午3:59:27
 *
 */
public class LaneAttributeData {
	/**
	 * 字段定义，各字段以逗号隔开 :
	 * 静态属性值：
	 * 1.路径ID 2.link序列 3.各Link距序列起点的距离 4.序列总长度 5.分歧点距序列起点距离
	 * 6.进入分歧点Link|出分歧点Link 7.分歧点ID，8.分歧点经度，9.分歧点纬度,10.分歧点link与正北方向的夹角（进出口标志位为0、1取分歧点后的link，标志位为2的取分歧点之前的link），11.进出匝道口标志位（0: 沿原道路继续行驶，1:出匝道，2:匝道汇入,3:直行,4:左转,5:右转）
	 **/
	public String roadId;
	public String linkArr;
	public String LinkDisArr;
	public int totalLength;
	public int dif_Point_Dis;
	public String enter_DifPoint_Link;
	public String out_DifPoint_Link;
	public String dif_Point_Id;
	public double dif_lon;
	public double dif_lat;
	public double difPoint_angle;
	public int flag;
	public String linkLengthsArr;
	public String toString(){
		StringBuffer sb=new StringBuffer();
		sb.append(this.roadId);
		sb.append(",");
		sb.append(this.linkArr);
		sb.append(",");
		sb.append(this.LinkDisArr);
		sb.append(",");
		sb.append(this.totalLength);
		sb.append(",");
		sb.append(this.dif_Point_Dis);
		sb.append(",");
		sb.append(this.enter_DifPoint_Link+"|"+out_DifPoint_Link);
		sb.append(",");
		sb.append(this.dif_Point_Id);
		sb.append(",");
		sb.append(this.dif_lon);
		sb.append(",");
		sb.append(this.dif_lat);
		sb.append(",");
		sb.append(this.difPoint_angle);
		sb.append(",");
		sb.append(this.flag);
		return sb.toString();
		
		
	}
	/**
	 * 解析字符串
	 */
	public  LaneAttributeData parseData(String line) {
		// TODO Auto-generated method stub
		if(line.split(",").length!=11){
			return null;
		}
		LaneAttributeData ld=new LaneAttributeData();
		String []lineArr=line.split(",");
		ld.roadId=lineArr[0].trim();
		ld.linkArr=lineArr[1].trim();
		ld.LinkDisArr=lineArr[2].trim();
		ld.linkLengthsArr=getLinkLengthsArr(lineArr[2].trim(),Integer.parseInt(lineArr[3].trim()));
		ld.totalLength=Integer.parseInt(lineArr[3].trim());
		ld.dif_Point_Dis=Integer.parseInt(lineArr[4].trim());
		String []arr=lineArr[5].trim().split("\\|");
		ld.enter_DifPoint_Link=arr[0];
		ld.out_DifPoint_Link=arr[1];
		ld.dif_Point_Id=lineArr[6].trim();
		ld.dif_lon=Double.parseDouble(lineArr[7].trim());
		ld.dif_lat=Double.parseDouble(lineArr[8].trim());
		ld.difPoint_angle=Double.parseDouble(lineArr[9].trim());
		ld.flag=Integer.parseInt(lineArr[10].trim());
		return ld;
		
	}
	private String getLinkLengthsArr(String line,int totalLength) {
		// TODO Auto-generated method stub
		String []arr=line.split("\\|");
		StringBuffer sb=new StringBuffer();
		for(int i=0;i<arr.length-1;i++){
			int length=Integer.parseInt(arr[i+1])-Integer.parseInt(arr[i]);
			sb.append(length+"|");
		}
		int lastLinkLength=Integer.parseInt(arr[arr.length-1])-Integer.parseInt(arr[arr.length-2]);
		sb.append(lastLinkLength+"|");
		return sb.toString();
	}
	public static void main(String []args){
		String line="357280_358040,357280|357281|404896|-404898|404894|358049|358040,0|124|158|204|214|260|293,404,214,404896|404894,530822,116.47851,39.90837,128,1";
//		             357280_358040, 357280|357281|404896|-404898|404894|358049|358040, 0|124|158|204|214|260|293, 404,     214,            404896|404894,          530822, 116.47851, 39.90837, 128, 1
//		                                 路径ID，                     Link序列，                                                                                                          各Link距序列起点的距离，                   序列总长度，分歧点距序列起点距离，进入分歧点Link|出分歧点Link，分歧点ID，分歧点经度，分歧点纬度，出分歧点Link与正北方向夹角，进出匝道标志位（0: 沿原道路继续行驶，1:出匝道，2:匝道汇入）
		             LaneAttributeData ld=new LaneAttributeData().parseData(line);
		//System.out.println(ld.dif_lat);
	}
}
